Crate crossbeam [] [src]

Support for concurrent and parallel programming.

This crate is an early work in progress. The focus for the moment is concurrency:

  • Non-blocking data structures. These data structures allow for high performance, highly-concurrent access, much superior to wrapping with a Mutex. Ultimately the goal is to include stacks, queues, deques, bags, sets and maps. These live in the sync module.

  • Memory management. Because non-blocking data structures avoid global synchronization, it is not easy to tell when internal data can be safely freed. The mem module provides generic, easy to use, and high-performance APIs for managing memory in these cases. These live in the mem module.

  • Synchronization. The standard library provides a few synchronization primitives (locks, barriers, etc) but this crate seeks to expand that set to include more advanced/niche primitives, as well as userspace alternatives. These live in the sync module.

  • Scoped thread API. Finally, the crate provides a "scoped" thread API, making it possible to spawn threads that share stack data with their parents. This functionality is exported at the top-level.

Modules

epoch

Epoch-based memory management

sync

Synchronization primitives.

Structs

CachePadded

Pad T to the length of a cacheline.

Scope
ScopedJoinHandle

A handle to a scoped thread

Traits

ZerosValid

Types for which mem::zeroed() is safe.

Functions

builder_spawn_unsafe

Like std::thread::Builder::spawn, but without the closure bounds.

scope

Create a new scope, for deferred destructors.

spawn_unsafe

Like std::thread::spawn, but without the closure bounds.